﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;

namespace DAO
{
    public class DiaDiem_DAO
    {

        BanHang_LinQDataContext db = new BanHang_LinQDataContext();

        //Phương thức lấy Danh sách dia điểm

        public List<DiaDiem> LayDanhSach_DiaDiem()
        {
            try
            {
                List<DiaDiem> list = db.DiaDiems.Where(dd => dd.isDelete == 0).ToList();
                return list;
            }
            catch
            {
                return null;
            }
        }

        //Phương thức lấy thông tin một địa điểm cụ thể
        public DiaDiem LayThongTin_DiaDiem(DiaDiem diaDiem)
        {
            try
            {
                DiaDiem diaD = db.DiaDiems.SingleOrDefault(dd => dd.MaDiaDiem == diaDiem.MaDiaDiem);
                return diaD;
            }
            catch
            {
                return null;
            }
        }

        //Phương thức lấy danh sách địa điểm theo địa phương
        public List<DiaDiem> LayDanhSanhTheoDiaPhuong_DiaDiem(DiaPhuong maDiaPhuong)
        {
            try
            {
                List<DiaDiem> list = db.DiaDiems.Where(dd => dd.MaDiaPhuong == maDiaPhuong.MaDiaPhuong).ToList();
                return list;
            }
            catch
            {
                return null;
            }
        }

        //Phương thức Thêm váo một địa điểm

        public bool Them_DiaDiem(DiaDiem diaDiem)
        {
            try
            {
                db.DiaDiems.InsertOnSubmit(diaDiem);
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

        //Phương thức xóa một địa điểm cụ thể

        public bool Xoa_DiaDiem(DiaDiem diaDiem)
        {
            try
            {
                DiaDiem diaD = db.DiaDiems.SingleOrDefault(dd => dd.MaDiaDiem == diaDiem.MaDiaDiem);
                diaD.isDelete = 1;
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

        //Phương thức sửa một địa điểm

        public bool Sua_DiaDiem(DiaDiem diaDiem)
        {
            try
            {
                DiaDiem diaD = db.DiaDiems.SingleOrDefault(dd => dd.MaDiaDiem == diaDiem.MaDiaDiem);
                diaD.TenDiaDiem = diaDiem.TenDiaDiem;
                diaD.SoNha = diaDiem.SoNha;
                diaD.TenDuong = diaDiem.TenDuong;
                diaD.Phuong = diaDiem.Phuong;
                diaDiem.Quan = diaDiem.Quan;
                diaD.MaDiaPhuong = diaDiem.MaDiaPhuong;
                diaD.DienThoai = diaDiem.DienThoai;
                diaDiem.KinhDo = diaDiem.KinhDo;
                diaD.ViDo = diaDiem.ViDo;
                db.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }


        //////////////////////////////////////////////////////////////////////////
        /// hiển thị danh sách địa điểm
        /// 
        public IQueryable HienThiDSDiaDiem()
        {
            try
            {
                var q = from dd in db.DiaDiems
                        join dp in db.DiaPhuongs
                        on dd.MaDiaPhuong equals dp.MaDiaPhuong
                        where dd.isDelete == 0
                        select new
                        {
                            dd.MaDiaDiem,
                            dd.TenDiaDiem,
                            dd.SoNha,
                            dd.TenDuong,
                            dd.Phuong,
                            dd.Quan,
                            dp.TenDiaPhuong,
                            dd.DienThoai,
                            dd.KinhDo,
                            dd.ViDo
                        };
                return q;
            }
            catch (Exception ex)
            {
                return null;
                throw new Exception(ex.Message);
            }
        }


    }
}
